//	Copyright (C) 2007 Christian Martick, http://juhu-mac.blogspot.com
//
//	Permission is hereby granted, free of charge, to any person obtaining a copy
//	of this software and associated documentation files (the "Software"), to deal
//	in the Software without restriction, including without limitation the rights
//	to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
//	copies of the Software, and to permit persons to whom the Software is
//	furnished to do so, subject to the following conditions:
//
//	The above copyright notice and this permission notice shall be included in
//	all copies or substantial portions of the Software.
//
//	THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
//	IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
//	FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
//	AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
//	LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
//	OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
//	THE SOFTWARE.

#import "smcAudioPlayback.h"

@implementation _AVController

- (void)itemFinishedPlaying: (id) item
{
	[super itemFinishedPlaying: item];
	[[self delegate] release];
}

- (void) itemFailedPlaying
{
	[super itemFailedPlaying];
	[[self delegate] release];
}
@end

@implementation smcAudioPlayback

+ (void) playApplicationSoundNamed: (NSString *) name
{
	// get path
	NSString *path = [[NSBundle mainBundle] pathForResource: name ofType: @"wav" inDirectory: @""];

	// make temporary object, will be released by _avcontroller when file done playing or failed
	[[smcAudioPlayback alloc] initWithPath: path];
}

- (void) dealloc 
{	
	//NSLog(@">> smcAudioPlayback_dealloc");
	[avController pause];
	[item release];
	[avController release];
	// resume playback
	if (_wasPlaying)
		PCSetPlaybackState (NULL, kPlayerPlaying);
	[super dealloc];
}

- (id) initWithPath: (NSString *) path 
{
	self = [super init];
	if (self != nil) 
	{
		// playing using AVController will pause anything playing, so figure out if something is playing
		// and save the state in order to resume afterwards
		// (using MobileMusicPlay framework again)
		_wasPlaying = (PCGetPlaybackState() == kPlayerPlaying);
		
		NSError *error = nil;
		avController = [[_AVController alloc] init];
		item = [[AVItem alloc] initWithPath: path error: &error];
		[avController setDelegate: self];	
		[avController setCurrentItem: item preservingRate: NO];
		[avController play: nil];
	}
	return self;
}


@end
